From: Keir Fraser Date: Mon, 20 Oct 2008 14:11:41 +0000 (+0100) Subject: Add a new file xen/include/xen/hvm/irq.h to share common definitions. X-Git-Tag: archive/raspbian/4.8.0-1+rpi1~1^2~14066^2~28 X-Git-Url: https://dgit.raspbian.org/%22http:/www.example.com/cgi/%22https:/%22bookmarks://%22/%22http:/www.example.com/cgi/%22https:/%22bookmarks:/%22?a=commitdiff_plain;h=c2a61a79bf8b05255ec191739e413af3e3e4218e;p=xen.git Add a new file xen/include/xen/hvm/irq.h to share common definitions. Signed-off-by: Anthony Xu Signed-off-by: Dexuan Cui --- diff --git a/xen/include/asm-x86/hvm/irq.h b/xen/include/asm-x86/hvm/irq.h index 0f17390e9c..89a799f601 100644 --- a/xen/include/asm-x86/hvm/irq.h +++ b/xen/include/asm-x86/hvm/irq.h @@ -22,62 +22,11 @@ #ifndef __ASM_X86_HVM_IRQ_H__ #define __ASM_X86_HVM_IRQ_H__ -#include -#include -#include #include +#include #include #include #include -#include - -struct dev_intx_gsi_link { - struct list_head list; - uint8_t device; - uint8_t intx; - uint8_t gsi; - uint8_t link; -}; - -#define _HVM_IRQ_DPCI_MSI 0x1 - -struct hvm_gmsi_info { - uint32_t gvec; - uint32_t gflags; -}; - -struct hvm_mirq_dpci_mapping { - uint32_t flags; - int pending; - struct list_head digl_list; - struct domain *dom; - struct hvm_gmsi_info gmsi; -}; - -struct hvm_girq_dpci_mapping { - uint8_t valid; - uint8_t device; - uint8_t intx; - uint8_t machine_gsi; -}; - -#define NR_ISAIRQS 16 -#define NR_LINK 4 -/* Protected by domain's event_lock */ -struct hvm_irq_dpci { - /* Machine IRQ to guest device/intx mapping. */ - DECLARE_BITMAP(mapping, NR_PIRQS); - struct hvm_mirq_dpci_mapping mirq[NR_IRQS]; - /* Guest IRQ to guest device/intx mapping. */ - struct hvm_girq_dpci_mapping girq[NR_IRQS]; - uint8_t msi_gvec_pirq[NR_VECTORS]; - DECLARE_BITMAP(dirq_mask, NR_IRQS); - /* Record of mapped ISA IRQs */ - DECLARE_BITMAP(isairq_map, NR_ISAIRQS); - /* Record of mapped Links */ - uint8_t link_cnt[NR_LINK]; - struct timer hvm_timer[NR_IRQS]; -}; struct hvm_irq { /* @@ -149,27 +98,8 @@ struct hvm_irq { #define hvm_isa_irq_to_gsi(isa_irq) ((isa_irq) ? : 2) -/* Modify state of a PCI INTx wire. */ -void hvm_pci_intx_assert( - struct domain *d, unsigned int device, unsigned int intx); -void hvm_pci_intx_deassert( - struct domain *d, unsigned int device, unsigned int intx); - -/* Modify state of an ISA device's IRQ wire. */ -void hvm_isa_irq_assert( - struct domain *d, unsigned int isa_irq); -void hvm_isa_irq_deassert( - struct domain *d, unsigned int isa_irq); - -void hvm_set_pci_link_route(struct domain *d, u8 link, u8 isa_irq); - -void hvm_maybe_deassert_evtchn_irq(void); -void hvm_assert_evtchn_irq(struct vcpu *v); -void hvm_set_callback_via(struct domain *d, uint64_t via); - /* Check/Acknowledge next pending interrupt. */ struct hvm_intack hvm_vcpu_has_pending_irq(struct vcpu *v); struct hvm_intack hvm_vcpu_ack_pending_irq(struct vcpu *v, struct hvm_intack intack); - #endif /* __ASM_X86_HVM_IRQ_H__ */ diff --git a/xen/include/xen/hvm/irq.h b/xen/include/xen/hvm/irq.h new file mode 100644 index 0000000000..952be135d3 --- /dev/null +++ b/xen/include/xen/hvm/irq.h @@ -0,0 +1,98 @@ +/****************************************************************************** + * irq.h + * + * Interrupt distribution and delivery logic. + * + * Copyright (c) 2006, K A Fraser, XenSource Inc. + * + * This program is free software; you can redistribute it and/or modify it + * under the terms and conditions of the GNU General Public License, + * version 2, as published by the Free Software Foundation. + * + * This program is distributed in the hope it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for + * more details. + * + * You should have received a copy of the GNU General Public License along with + * this program; if not, write to the Free Software Foundation, Inc., 59 Temple + * Place - Suite 330, Boston, MA 02111-1307 USA. + */ + +#ifndef __XEN_HVM_IRQ_H__ +#define __XEN_HVM_IRQ_H__ + +#include +#include +#include +#include + +struct dev_intx_gsi_link { + struct list_head list; + uint8_t device; + uint8_t intx; + uint8_t gsi; + uint8_t link; +}; + +#define _HVM_IRQ_DPCI_MSI 0x1 + +struct hvm_gmsi_info { + uint32_t gvec; + uint32_t gflags; +}; + +struct hvm_mirq_dpci_mapping { + uint32_t flags; + int pending; + struct list_head digl_list; + struct domain *dom; + struct hvm_gmsi_info gmsi; +}; + +struct hvm_girq_dpci_mapping { + uint8_t valid; + uint8_t device; + uint8_t intx; + uint8_t machine_gsi; +}; + +#define NR_ISAIRQS 16 +#define NR_LINK 4 + +/* Protected by domain's event_lock */ +struct hvm_irq_dpci { + /* Machine IRQ to guest device/intx mapping. */ + DECLARE_BITMAP(mapping, NR_PIRQS); + struct hvm_mirq_dpci_mapping mirq[NR_IRQS]; + /* Guest IRQ to guest device/intx mapping. */ + struct hvm_girq_dpci_mapping girq[NR_IRQS]; + uint8_t msi_gvec_pirq[NR_VECTORS]; + DECLARE_BITMAP(dirq_mask, NR_IRQS); + /* Record of mapped ISA IRQs */ + DECLARE_BITMAP(isairq_map, NR_ISAIRQS); + /* Record of mapped Links */ + uint8_t link_cnt[NR_LINK]; + struct timer hvm_timer[NR_IRQS]; +}; + +/* Modify state of a PCI INTx wire. */ +void hvm_pci_intx_assert( + struct domain *d, unsigned int device, unsigned int intx); +void hvm_pci_intx_deassert( + struct domain *d, unsigned int device, unsigned int intx); + +/* Modify state of an ISA device's IRQ wire. */ +void hvm_isa_irq_assert( + struct domain *d, unsigned int isa_irq); +void hvm_isa_irq_deassert( + struct domain *d, unsigned int isa_irq); + +void hvm_set_pci_link_route(struct domain *d, u8 link, u8 isa_irq); + +void hvm_maybe_deassert_evtchn_irq(void); +void hvm_assert_evtchn_irq(struct vcpu *v); +void hvm_set_callback_via(struct domain *d, uint64_t via); + + +#endif /* __XEN_HVM_IRQ_H__ */